<html>
<head>
	<title>Serialization benchmark results</title>
	<link href='default.css' rel='stylesheet' type='text/css' />
</head>
<body>

<h2>Results of <span>Northwind database rows serialization</span> benchmarks run at 06/02/2010</h2>
<span class="summary">These benchmarks show the total time in ticks (1/1000ms) that it takes each serializer to serialize and deserialize the first row from each table in the  <a href='http://code.google.com/p/servicestack/source/browse/trunk/Common/Northwind.Benchmarks/Northwind.Common/DataModel/NorthwindData.cs'>Northwind Database</a><strong>1,000,000</strong> Times. <br/><br/>The full source code of the serialization benchmarks (which generated this report) is <a href='http://code.google.com/p/servicestack/source/browse/trunk/Common/Northwind.Benchmarks/Northwind.Benchmarks.Console/Program.cs'>available here</a>.</span><div id='combined'>
<h3>Combined results of all benchmarks below</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>4097</td><th>4.68x</th><td>235392060</td><td>643889088</td><td>879281148</td><td>879.2811</td><th>6.72x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>1958</td><th>2.24x</th><td>400010575</td><td>932212071</td><td>1332222646</td><td>1332.2226</td><th>10.18x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>4927</td><th>5.62x</th><td>622288868</td><td>563079698</td><td>1185368566</td><td>1185.3686</td><th>9.06x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>2014</td><th>2.30x</th><td>303865396</td><td>763206254</td><td>1067071650</td><td>1067.0716</td><th>8.15x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>876</td><th>1x</th><td>64480719</td><td>66410737</td><td>130891456</td><td>130.8915</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>1560</td><th>1.78x</th><td>152435512</td><td>98672475</td><td>251107987</td><td>251.1080</td><th>1.92x</th></tr>
</tbody>
</table>
</div>
<h3>Results of serializing and deserializing CategoryDto 1,000,000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>275</td><th>4.74x</th><td>16160260</td><td>47542393</td><td>63702653</td><td>63.7027</td><th>7.49x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>95</td><th>1.64x</th><td>26934050</td><td>58339075</td><td>85273125</td><td>85.2731</td><th>10.03x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>329</td><th>5.67x</th><td>49300488</td><td>53850072</td><td>103150560</td><td>103.1506</td><th>12.13x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>110</td><th>1.90x</th><td>22923190</td><td>47764119</td><td>70687309</td><td>70.6873</td><th>8.31x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>58</td><th>1x</th><td>4325223</td><td>4178254</td><td>8503477</td><td>8.5035</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>87</td><th>1.5x</th><td>9447704</td><td>4536110</td><td>13983814</td><td>13.9838</td><th>1.64x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing CustomerDto 1,000,000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>482</td><th>3.74x</th><td>25232557</td><td>71962259</td><td>97194816</td><td>97.1948</td><th>5.47x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>256</td><th>1.98x</th><td>42549449</td><td>95751507</td><td>138300956</td><td>138.3010</td><th>7.78x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>635</td><th>4.92x</th><td>73750243</td><td>64728680</td><td>138478923</td><td>138.4789</td><th>7.79x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>271</td><th>2.10x</th><td>36180465</td><td>69314105</td><td>105494570</td><td>105.4946</td><th>5.94x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>129</td><th>1x</th><td>8231547</td><td>9538334</td><td>17769881</td><td>17.7699</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>202</td><th>1.57x</th><td>12642376</td><td>11846953</td><td>24489329</td><td>24.4893</td><th>1.38x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing EmployeeDto 1,000,000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>851</td><th>2.43x</th><td>43906046</td><td>95134468</td><td>139040514</td><td>139.0405</td><th>4.17x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>598</td><th>1.71x</th><td>71007035</td><td>178911043</td><td>249918078</td><td>249.9181</td><th>7.50x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>1092</td><th>3.12x</th><td>126919397</td><td>98248433</td><td>225167830</td><td>225.1678</td><th>6.76x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>607</td><th>1.73x</th><td>64459717</td><td>169106871</td><td>233566588</td><td>233.5666</td><th>7.01x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>350</td><th>1x</th><td>14447354</td><td>18874666</td><td>33322020</td><td>33.3220</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>495</td><th>1.41x</th><td>33564303</td><td>23633218</td><td>57197521</td><td>57.1975</td><th>1.72x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing EmployeeTerritoryDto 1,000,000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>233</td><th>12.94x</th><td>14264657</td><td>43777660</td><td>58042317</td><td>58.0423</td><th>9.89x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>38</td><th>2.11x</th><td>26887001</td><td>52328592</td><td>79215593</td><td>79.2156</td><th>13.50x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>234</td><th>13x</th><td>30108615</td><td>37976090</td><td>68084705</td><td>68.0847</td><th>11.60x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>53</td><th>2.94x</th><td>17338720</td><td>33635789</td><td>50974509</td><td>50.9745</td><th>8.69x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>18</td><th>1x</th><td>4120658</td><td>1748037</td><td>5868695</td><td>5.8687</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>43</td><th>2.39x</th><td>7465902</td><td>3536420</td><td>11002322</td><td>11.0023</td><th>1.87x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing OrderDetailDto 1,000,000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>282</td><th>0x</th><td>19826349</td><td>56700635</td><td>76526984</td><td>76.5270</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>74</td><th>0x</th><td>35511037</td><td>69378237</td><td>104889274</td><td>104.8893</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>315</td><th>0x</th><td>51236026</td><td>60907981</td><td>112144007</td><td>112.1440</td><th>0x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>94</td><th>0x</th><td>29117198</td><td>69046244</td><td>98163442</td><td>98.1634</td><th>0x</th></tr><tr class='failed'><th class='c1'>ProtoBuf.net</th><td>21</td><th>0x</th><td>5420780</td><td>-1</td><td>5420779</td><td>5.4208</td><th>0x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>76</td><th>0x</th><td>13931735</td><td>7987754</td><td>21919489</td><td>21.9195</td><th>0x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing OrderDto 1,000,000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>615</td><th>5.69x</th><td>35125007</td><td>91945790</td><td>127070797</td><td>127.0708</td><th>6.09x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>366</td><th>3.39x</th><td>71350399</td><td>157007149</td><td>228357548</td><td>228.3575</td><th>10.95x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>758</td><th>7.02x</th><td>117165308</td><td>79038755</td><td>196204063</td><td>196.2041</td><th>9.41x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>366</td><th>3.39x</th><td>59050825</td><td>160823009</td><td>219873834</td><td>219.8738</td><th>10.54x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>108</td><th>1x</th><td>9367968</td><td>11492220</td><td>20860188</td><td>20.8602</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>253</td><th>2.34x</th><td>30355938</td><td>20069494</td><td>50425432</td><td>50.4254</td><th>2.42x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing ProductDto 1,000,000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>452</td><th>11.3x</th><td>23924837</td><td>72926315</td><td>96851152</td><td>96.8512</td><th>13.06x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>187</td><th>4.68x</th><td>39682314</td><td>104537793</td><td>144220107</td><td>144.2201</td><th>19.44x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>508</td><th>12.7x</th><td>58246144</td><td>59860261</td><td>118106405</td><td>118.1064</td><th>15.92x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>189</td><th>4.72x</th><td>32773851</td><td>101394174</td><td>134168025</td><td>134.1680</td><th>18.09x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>40</td><th>1x</th><td>5465528</td><td>1952131</td><td>7417659</td><td>7.4177</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>163</td><th>4.08x</th><td>16336833</td><td>13171993</td><td>29508826</td><td>29.5088</td><th>3.98x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing RegionDto 1,000,000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>209</td><th>19x</th><td>14149955</td><td>41499587</td><td>55649542</td><td>55.6495</td><th>10.60x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>38</td><th>3.45x</th><td>24827819</td><td>55733117</td><td>80560936</td><td>80.5609</td><th>15.35x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>223</td><th>20.27x</th><td>29531323</td><td>32138727</td><td>61670050</td><td>61.6700</td><th>11.75x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>38</td><th>3.45x</th><td>12122436</td><td>31500943</td><td>43623379</td><td>43.6234</td><th>8.31x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>11</td><th>1x</th><td>3210786</td><td>2037358</td><td>5248144</td><td>5.2481</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>32</td><th>2.91x</th><td>8626045</td><td>2692519</td><td>11318564</td><td>11.3186</td><th>2.16x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing ShipperDto 1,000,000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>235</td><th>6.91x</th><td>15807205</td><td>41921415</td><td>57728620</td><td>57.7286</td><th>7.25x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>64</td><th>1.88x</th><td>26255785</td><td>60276976</td><td>86532761</td><td>86.5328</td><th>10.87x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>269</td><th>7.91x</th><td>34263023</td><td>36062102</td><td>70325125</td><td>70.3251</td><th>8.83x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>64</td><th>1.88x</th><td>14487013</td><td>35599911</td><td>50086924</td><td>50.0869</td><th>6.29x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>34</td><th>1x</th><td>3916942</td><td>4044236</td><td>7961178</td><td>7.9612</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>54</td><th>1.59x</th><td>10189116</td><td>3975404</td><td>14164520</td><td>14.1645</td><th>1.78x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing SupplierDto 1,000,000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>497</td><th>4.56x</th><td>29550343</td><td>83008775</td><td>112559118</td><td>112.5591</td><th>6.77x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>255</td><th>2.34x</th><td>43478662</td><td>104497116</td><td>147975778</td><td>147.9758</td><th>8.90x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>611</td><th>5.61x</th><td>68337468</td><td>63486213</td><td>131823681</td><td>131.8237</td><th>7.93x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>255</td><th>2.34x</th><td>30724830</td><td>75665504</td><td>106390334</td><td>106.3903</td><th>6.40x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>109</td><th>1x</th><td>7618719</td><td>9005480</td><td>16624199</td><td>16.6242</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>180</td><th>1.65x</th><td>14796441</td><td>11520842</td><td>26317283</td><td>26.3173</td><th>1.58x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing TerritoryDto 1,000,000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>248</td><th>13.05x</th><td>17271193</td><td>54170426</td><td>71441619</td><td>71.4416</td><th>9.77x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>61</td><th>3.21x</th><td>27038061</td><td>64829703</td><td>91867764</td><td>91.8678</td><th>12.56x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>268</td><th>14.11x</th><td>34666859</td><td>37690365</td><td>72357224</td><td>72.3572</td><th>9.89x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>61</td><th>3.21x</th><td>13804349</td><td>38401829</td><td>52206178</td><td>52.2062</td><th>7.14x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>19</td><th>1x</th><td>3775994</td><td>3540021</td><td>7316015</td><td>7.3160</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>51</td><th>2.68x</th><td>9010854</td><td>3689522</td><td>12700376</td><td>12.7004</td><th>1.74x</th></tr>
</tbody>
</table>
</body>
</html>

